﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Data;

namespace Data
{
    public class CuentasDataAccess
    {
        private SQLiteConnection con = DataBaseHelper.GetConnection("BDHostal.sqlite");
        DataSet dataSet = new DataSet();
        DataTable dt = new DataTable();
        private bool exitoRegistrar;
        public bool registrarCuenta(string numeroDocumento, string usuario, string password,string tipoCuenta)
        {
            using (var cmd = con.CreateCommand())
            {
                try
                {
                    con.Open();
                    cmd.CommandText = "INSERT INTO cuentasPersonal(numeroDocumento,usuario,password,tipoCuenta,activo) VALUES ('" + numeroDocumento + "','" + usuario.ToLowerInvariant() + "','" + password + "','"+tipoCuenta+"','si')";
                    cmd.ExecuteNonQuery();
                    exitoRegistrar = true;

                }
                catch (SQLiteException ex)
                {
                    exitoRegistrar = false;
                }
                finally
                {
                    cmd.Dispose();
                    con.Close();
                }
            }
            return exitoRegistrar;
        }
        public bool actualizarDatos(string numeroDocumentoNuevo,string numeroDocumentoAntiguo,string usuario,string cuentaActiva,string tipoCuenta)
        {
            using (var cmd = con.CreateCommand())
            {
                try
                {
                    con.Open();
                    cmd.CommandText = "UPDATE cuentasPersonal SET numeroDocumento ='" + numeroDocumentoNuevo + "',usuario='"+usuario+"',activo='"+cuentaActiva+"' ,tipoCuenta='"+tipoCuenta+"' WHERE numeroDocumento ='"+numeroDocumentoAntiguo+"'";
                    cmd.ExecuteNonQuery();
                    exitoRegistrar = true;

                }
                catch (SQLiteException ex)
                {

                    exitoRegistrar = false;
                }
                finally
                {
                    cmd.Dispose();
                    con.Close();
                }
            }
            return exitoRegistrar;
        }
        public bool modificarPassword(string usuario, string password)
        {
            using (var cmd = con.CreateCommand())
            {
                try
                {
                    con.Open();
                    cmd.CommandText = "UPDATE cuentasPersonal SET password='" + password + "' WHERE usuario ='" + usuario + "'";
                    cmd.ExecuteNonQuery();
                    exitoRegistrar = true;

                }
                catch (SQLiteException ex)
                {

                    exitoRegistrar = false;
                }
                finally
                {
                    cmd.Dispose();
                    con.Close();
                }
            }
            return exitoRegistrar;
        }
        public DataTable buscarDatos(string numeroDocumento)
        {
            string cmd = "SELECT usuario,tipoCuenta,activo FROM cuentasPersonal WHERE numeroDocumento = '" + numeroDocumento + "'";
            {
                try
                {
                    con.Open();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    dt = dataSet.Tables[0];
                }
                catch (SystemException ex)
                {
                }
                finally
                {
                    con.Close();
                }
            }
            return dt;
        }
        public DataTable buscarPassword(string usuario)
        {
            string cmd = "SELECT password FROM cuentasPersonal WHERE usuario = '" + usuario + "'";
            {
                try
                {
                    con.Open();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    dt = dataSet.Tables[0];
                }
                catch (SystemException ex)
                {
                }
                finally
                {
                    con.Close();
                }
            }
            return dt;
        }
        public bool buscarUsuario(string usuario)
        {
            bool resultado;
            string cmd = "SELECT usuario FROM cuentasPersonal WHERE usuario='" + usuario.ToLowerInvariant() + "'";
            {
                try
                {
                    con.Open();
                    DataSet dataSet = new DataSet();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    DataTable dt = new DataTable();
                    dt = dataSet.Tables[0];
                    DataRow dataRow;
                    if (!dt.Rows[0].Equals(null))
                    {
                        dataRow = dt.Rows[0];
                        resultado = true;
                    }
                    else
                        resultado = false;


                }
                catch (SystemException ex)
                {
                    resultado = false;
                }
                finally
                {
                    con.Dispose();
                    con.Close();
                }
            }
            return resultado;
        }

        public bool buscarNumeroDocumento(string numeroDocumento)
        {
            bool resultado;
            string cmd = "SELECT numeroDocumento FROM cuentasPersonal WHERE numeroDocumento='" + numeroDocumento + "'";
            {
                try
                {
                    con.Open();
                    DataSet dataSet = new DataSet();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    DataTable dt = new DataTable();
                    dt = dataSet.Tables[0];
                    DataRow dataRow;
                    if (!dt.Rows[0].Equals(null))
                    {
                        dataRow = dt.Rows[0];
                        resultado = true;
                    }
                    else
                        resultado = false;


                }
                catch (SystemException ex)
                {
                    resultado = false;
                }
                finally
                {
                    con.Dispose();
                    con.Close();
                }
            }
            return resultado;
        }

        public string obtenerNumeroDocumento(string usuario)
        {
            string resultado;
            string cmd = "SELECT numeroDocumento FROM cuentasPersonal WHERE usuario='" + usuario + "'";
            {
                try
                {
                    con.Open();
                    DataSet dataSet = new DataSet();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    DataTable dt = new DataTable();
                    dt = dataSet.Tables[0];
                    DataRow dataRow;
                    if (!dt.Rows[0].Equals(null))
                    {
                        dataRow = dt.Rows[0];
                        resultado = dataRow[0].ToString();
                    }
                    else
                        resultado = "Error";


                }
                catch (SystemException ex)
                {
                    resultado = "Error";
                }
                finally
                {
                    con.Dispose();
                    con.Close();
                }
            }
            return resultado;
        }

        public DataTable buscarCuentasActivas()
        {
            string cmd = "SELECT c.numeroDocumento,usuario,tipoCuenta,nombre,apellido FROM cuentasPersonal c,datosPersonal d WHERE activo = 'si' AND c.numeroDocumento = d.numeroDocumento";
            {
                try
                {
                    con.Open();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    dt = dataSet.Tables[0];
                }
                catch (SystemException ex)
                {
                }
                finally
                {
                    con.Close();
                }
            }
            return dt;
        }
        public DataTable buscarCuentasActivas(string usuario)
        {
            string cmd = "SELECT c.numeroDocumento,usuario,tipoCuenta,nombre,apellido FROM cuentasPersonal c,datosPersonal d WHERE activo = 'si' AND c.numeroDocumento = d.numeroDocumento AND usuario !='"+usuario+"'";
            {
                try
                {
                    con.Open();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    dt = dataSet.Tables[0];
                }
                catch (SystemException ex)
                {
                }
                finally
                {
                    con.Close();
                }
            }
            return dt;
        }
    }
}
